/*
 * GrupoEmisores.cpp
 *
 *  Created on: Feb 23, 2010
 *      Author: jgrande
 */

#include "Universo.h"

namespace aplicacion {
namespace directorio {

Universo::Universo(T_ID_UNIVERSO id, Cantidad min, Cantidad max,
		Minutos ttl, string descripcion, bool abierto, bool ocupado,
		time_t horaCreacion):
	id(id),
	nextPlanetaId(1),
	min(min),
	max(max),
	ttl(ttl),
	descripcion(descripcion),
	abierto(abierto),
	ocupado(ocupado),
	horaCreacion(horaCreacion) {

}

Universo::~Universo() {

}

T_ID_PLANETA Universo::suscribir(Direccion dir, T_TAMANIO_PLANETA tamanio,
		Posicion posicion) {
	if(planetas.size()==max) {
		return -1;
	}

	Planeta planeta(nextPlanetaId++, dir, tamanio, posicion);
	planetas.push_back(planeta);

	return planeta.getId();
}

bool_t Universo::desuscribir(T_ID_PLANETA idPlaneta) {
	if(planetas.size()==0) {
		return FALSE;
	}

	list<Planeta>::iterator it = planetas.begin();
	for(;it!=planetas.end();it++) {
		if(it->getId()==idPlaneta) {
			planetas.erase(it);
			return TRUE;
		}
	}

	return FALSE;
}

std::ostream& operator<<(std::ostream& os, const Universo& u) {
	os << u.getId();
}

}
}
